package src.data.daos;

import java.util.HashSet;
import java.util.Set;

import org.hibernate.Criteria;
import org.hibernate.criterion.Restrictions;

import src.data.hbt.HibernateProvider;
import src.domain.Cuenta;
import src.domain.Extraccion;
import src.domain.Movimiento;

public class MovimientoDAO {
	private HibernateProvider provider;

	private static MovimientoDAO instance = null;

	public static MovimientoDAO getInstance() {
		if (instance == null)
			instance = new MovimientoDAO();
		return instance;
	}
	
	private MovimientoDAO() {
		this.provider = HibernateProvider.getInstance();

	}
	
	@SuppressWarnings("unchecked")
	public Set<Extraccion> getMovimientos(Cuenta cuenta){
		Criteria criteria = provider.getSession().createCriteria(Movimiento.class).add(Restrictions.like("cuentaId", cuenta.getCuentaId()));
		Set<Extraccion> set = new HashSet<Extraccion>();
		set.addAll(criteria.list());
		
		return set;
	}
	
	public void save(Movimiento movimiento) {
		provider.getSession().save(movimiento);
		
	}

	public void saveOrUpdate(Movimiento movimiento) {
		provider.getSession().saveOrUpdate(movimiento);
		
	}

	public void update(Movimiento movimiento) {	
		provider.getSession().update(movimiento);		
	}

	public void delete(Movimiento movimiento) {
		provider.getSession().delete(movimiento);
	}
}
